﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Zero.POCO;
using Zero.POCO.FiltreEnumeration;
using Zero.Presenter;

namespace DevExpress.MailClient.Win.Forms.Cible
{
    public partial class GestionCible : XtraEditors.XtraForm
    {
        public  Filter filtre { get; set; }
        public List<int> listeEquipement;
        public List<int> listeCSE;
        public List<int> listeCSP;
        public List<int> listeNbChambre;
        public List<int> listeHabitat;
        public List<int> listeNbVoiture;
        public List<int> listeNivInstruc;
        public List<int> listeRevenue;
        public List<int> listeMatromonia;
        public List<int> listeStatutFamil;
        public List<int> listeTypeHabitat;
        public List<int> listeGenre; 
        public bool IsCibleModified;
        private bool _newCible;

        public GestionCible(Filter filtre,Boolean NewCible)
        {
            InitializeComponent();
            for (int i = 1; i < 101; i++)
            {
                CBEAgeMax.Properties.Items.Insert(i-1,i);
                CBEAgeMin.Properties.Items.Insert(i-1, i);
            }
            _newCible = NewCible;
            CBEAgeMax.SelectedIndex = 99;
            CBEAgeMin.SelectedIndex = 0;
        }


        private void GestionCible_Load(object sender, EventArgs e)
        {
            if (_newCible)
            {
                filtre = new Filter
                    {
                        id = new Guid()
                    };
                IsCibleModified = true;
            }
        }

        private void ButtonAnnuler_Click(object sender, EventArgs e)
        {
            DialogResult result = QueryClose();
            if (result != DialogResult.Cancel)
            {
                this.Close();
            }
        }

        private void ButtonSauver_Click(object sender, EventArgs e)
        {
            #region a deplacer 

            /*filtre.CSEs=new List<CSE>();
            if (CLBCCSE.GetItemChecked(0)) filtre.CSEs.Add(CSE.A_ClasseAisee);
            if (CLBCCSE.GetItemChecked(1)) filtre.CSEs.Add(CSE.B_ClasseMoyenneSuperieur);
            if (CLBCCSE.GetItemChecked(2)) filtre.CSEs.Add(CSE.C_ClasseMoyenneInferieur);
            if (CLBCCSE.GetItemChecked(3)) filtre.CSEs.Add(CSE.D_ClasseDemunie);*/
/*
            filtre.Genres=new List<Genre>();
            if(CLBCGenre.GetItemChecked(0)) filtre.Genres.Add(Genre.Homme);
            if(CLBCGenre.GetItemChecked(1)) filtre.Genres.Add(Genre.Femme);
            */

            /*   filtre.CSPs=new List<CSP>();
               if (CLBCCSP.GetItemChecked(0)) filtre.CSPs.Add(CSP.HautFonctionnaireCadreSuperieurEtat);
               if (CLBCCSP.GetItemChecked(1)) filtre.CSPs.Add(CSP.ProfessionLiberal);
               if (CLBCCSP.GetItemChecked(2)) filtre.CSPs.Add(CSP.Cadre);
               if (CLBCCSP.GetItemChecked(3)) filtre.CSPs.Add(CSP.CadreMoyen);
               if (CLBCCSP.GetItemChecked(4)) filtre.CSPs.Add(CSP.Employee);
               if (CLBCCSP.GetItemChecked(5)) filtre.CSPs.Add(CSP.PetitPatron);
               if (CLBCCSP.GetItemChecked(6)) filtre.CSPs.Add(CSP.Chomeur);
               if (CLBCCSP.GetItemChecked(7)) filtre.CSPs.Add(CSP.FemmeFoyer);
               if (CLBCCSP.GetItemChecked(8)) filtre.CSPs.Add(CSP.Etudiant);
               if (CLBCCSP.GetItemChecked(9)) filtre.CSPs.Add(CSP.Retraite);
               if (CLBCCSP.GetItemChecked(10)) filtre.CSPs.Add(CSP.Pensionne);
               if (CLBCCSP.GetItemChecked(10)) filtre.CSPs.Add(CSP.Inactif);

               filtre.NbChambres=new List<NbChambre>();
               if (CLBCNbChambre.GetItemChecked(0)) filtre.NbChambres.Add(NbChambre.UneCahmbre);
               if (CLBCNbChambre.GetItemChecked(1)) filtre.NbChambres.Add(NbChambre.DeuxChambre);
               if (CLBCNbChambre.GetItemChecked(2)) filtre.NbChambres.Add(NbChambre.TroisChambre);
               if (CLBCNbChambre.GetItemChecked(3)) filtre.NbChambres.Add(NbChambre.QuatreChambre);
               if (CLBCNbChambre.GetItemChecked(4)) filtre.NbChambres.Add(NbChambre.CinqChambreOuPlus);
            

               filtre.Habitats = new List<Habitat>();
               if (CLBCHabitat.GetItemChecked(0)) filtre.Habitats.Add(Habitat.Proprietaire);
               if (CLBCHabitat.GetItemChecked(1)) filtre.Habitats.Add(Habitat.Locataire);
               

            filtre.NbVoitures = new List<NbVoiture>();
            if (CLBCNbVoiture.GetItemChecked(0)) filtre.NbVoitures.Add(NbVoiture.Aucune);
            if (CLBCNbVoiture.GetItemChecked(1)) filtre.NbVoitures.Add(NbVoiture.UneVoiture);
            if (CLBCNbVoiture.GetItemChecked(2)) filtre.NbVoitures.Add(NbVoiture.DeuxVoiture);
            if (CLBCNbVoiture.GetItemChecked(3)) filtre.NbVoitures.Add(NbVoiture.TroisVoiturePlus);
            

            filtre.NiveauxInstructions = new List<NiveauInstruction>();
            if (CLBCNivInstruc.GetItemChecked(0)) filtre.NiveauxInstructions.Add(NiveauInstruction.SansInstructionAnalphabet);
            if (CLBCNivInstruc.GetItemChecked(1)) filtre.NiveauxInstructions.Add(NiveauInstruction.SansInstructionMaisSaitLireEtEcrire);
            if (CLBCNivInstruc.GetItemChecked(2)) filtre.NiveauxInstructions.Add(NiveauInstruction.NiveauxPrimaire);
            if (CLBCNivInstruc.GetItemChecked(3)) filtre.NiveauxInstructions.Add(NiveauInstruction.NiveauxMoyen);
            if (CLBCNivInstruc.GetItemChecked(4)) filtre.NiveauxInstructions.Add(NiveauInstruction.NiveauxSecondaire);
            if (CLBCNivInstruc.GetItemChecked(5)) filtre.NiveauxInstructions.Add(NiveauInstruction.Universitaire);
            

            filtre.RevenueTotalFoyers = new List<RevenuTotalFoyer>();
            if (CLBCRevenue.GetItemChecked(0)) filtre.RevenueTotalFoyers.Add(RevenuTotalFoyer.Moins12000);
            if (CLBCRevenue.GetItemChecked(1)) filtre.RevenueTotalFoyers.Add(RevenuTotalFoyer.Entre12000et19999);
            if (CLBCRevenue.GetItemChecked(2)) filtre.RevenueTotalFoyers.Add(RevenuTotalFoyer.Entre20000et34999);
            if (CLBCRevenue.GetItemChecked(3)) filtre.RevenueTotalFoyers.Add(RevenuTotalFoyer.Entre35000et49000);
            if (CLBCRevenue.GetItemChecked(4)) filtre.RevenueTotalFoyers.Add(RevenuTotalFoyer.Entre50000et89000);
            if (CLBCRevenue.GetItemChecked(5)) filtre.RevenueTotalFoyers.Add(RevenuTotalFoyer.Entre90000et120000);
            if (CLBCRevenue.GetItemChecked(6)) filtre.RevenueTotalFoyers.Add(RevenuTotalFoyer.PlusDe150000);
           

            filtre.SituationMatrimonials = new List<SituationMatrimonial>();
            if (CLBCMatrimon.GetItemChecked(0)) filtre.SituationMatrimonials.Add(SituationMatrimonial.Celibataire);
            if (CLBCMatrimon.GetItemChecked(1)) filtre.SituationMatrimonials.Add(SituationMatrimonial.MarieSansEnfant);
            if (CLBCMatrimon.GetItemChecked(2)) filtre.SituationMatrimonials.Add(SituationMatrimonial.MarieAvecEnfantMineur);
            if (CLBCMatrimon.GetItemChecked(3)) filtre.SituationMatrimonials.Add(SituationMatrimonial.MarieAvecEnfantMajeur);
            if (CLBCMatrimon.GetItemChecked(4)) filtre.SituationMatrimonials.Add(SituationMatrimonial.MarieAvecEnfantMineurMajeur);
            if (CLBCMatrimon.GetItemChecked(5)) filtre.SituationMatrimonials.Add(SituationMatrimonial.Divorce);
            

            filtre.StatutFamiliales = new List<StatutFamiliale>();
            if (CLBCStatutFam.GetItemChecked(0)) filtre.StatutFamiliales.Add(StatutFamiliale.ChefFamille);
            if (CLBCStatutFam.GetItemChecked(1)) filtre.StatutFamiliales.Add(StatutFamiliale.MaitresseMaison);
            if (CLBCStatutFam.GetItemChecked(2)) filtre.StatutFamiliales.Add(StatutFamiliale.EnfantChefFamille);
            if (CLBCStatutFam.GetItemChecked(3)) filtre.StatutFamiliales.Add(StatutFamiliale.Autre);
             





            filtre.TypeHabitations = new List<TypeHabitation>();
            if (CLBCTypeHabita.GetItemChecked(0)) filtre.TypeHabitations.Add(TypeHabitation.MaisonToile);
            if (CLBCTypeHabita.GetItemChecked(1)) filtre.TypeHabitations.Add(TypeHabitation.MaisonTraditionnel);
            if (CLBCTypeHabita.GetItemChecked(2)) filtre.TypeHabitations.Add(TypeHabitation.AppartementImmeuble);
            if (CLBCTypeHabita.GetItemChecked(3)) filtre.TypeHabitations.Add(TypeHabitation.AppartementImmeubleStanding);
            if (CLBCTypeHabita.GetItemChecked(4)) filtre.TypeHabitations.Add(TypeHabitation.VillaJumeleTerrain);
            if (CLBCTypeHabita.GetItemChecked(5)) filtre.TypeHabitations.Add(TypeHabitation.VillaIndependanteJardin);

            */
#endregion


            listeEquipement = new List<int>();
            for (var i = 0; i < 22; i++)
            {
                listeEquipement.Add(CLBCEquipement.GetItemChecked(i) ? 1 : 0);
            }

            listeCSE = new List<int>();
            for (var i = 0; i < 4; i++)
            {
                listeCSE.Add(CLBCCSE.GetItemChecked(i) ? 1 : 0);
            }

            listeCSP = new List<int>();
            for (var i = 0; i < 11; i++)
            {
                listeCSP.Add(CLBCCSP.GetItemChecked(i) ? 1 : 0);
            }

            listeNbChambre = new List<int>();
            for (var i = 0; i < 5; i++)
            {
                listeNbChambre.Add(CLBCNbChambre.GetItemChecked(i) ? 1 : 0);
            }

            listeHabitat = new List<int>();
            for (var i = 0; i < 2; i++)
            {
                listeHabitat.Add(CLBCHabitat.GetItemChecked(i) ? 1 : 0);
            }

            listeNbVoiture = new List<int>();
            for (var i = 0; i < 4; i++)
            {
                listeNbVoiture.Add(CLBCNbVoiture.GetItemChecked(i) ? 1 : 0);
            }

            listeNivInstruc = new List<int>();
            for (var i = 0; i < 6; i++)
            {
                listeNivInstruc.Add(CLBCNivInstruc.GetItemChecked(i) ? 1 : 0);
            }


            listeRevenue = new List<int>();
            for (var i = 0; i < 7; i++)
            {
                listeRevenue.Add(CLBCRevenue.GetItemChecked(i) ? 1 : 0);
            }

            listeMatromonia = new List<int>();
            for (var i = 0; i < 6; i++)
            {
                listeMatromonia.Add(CLBCMatrimon.GetItemChecked(i) ? 1 : 0);
            }



            listeStatutFamil = new List<int>();
            for (var i = 0; i < 4; i++)
            {
                listeStatutFamil.Add(CLBCStatutFam.GetItemChecked(i) ? 1 : 0);
            }

            listeTypeHabitat = new List<int>();
            for (var i = 0; i < 6; i++)
            {
                listeTypeHabitat.Add(CLBCTypeHabita.GetItemChecked(i) ? 1 : 0);
            }

            listeGenre = new List<int>();
            for (var i = 0; i < 2; i++)
            {
                listeGenre.Add(CLBCGenre.GetItemChecked(i) ? 1 : 0);
            }

            filtre.ageMax = int.Parse(CBEAgeMax.EditValue.ToString());
            filtre.ageMin = int.Parse(CBEAgeMin.EditValue.ToString());

            filtre.Nom = TENomCible.Text;


            IsCibleModified = false;
            DialogResult result = QueryClose();
            this.DialogResult=DialogResult.OK;
            this.Close();
        }


        DialogResult QueryClose()
        {
            if (!IsCibleModified)
                return DialogResult.Yes;

            DialogResult result = XtraMessageBox.Show(this, Properties.Resources.SaveQuestion, Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
            switch (result)
            {
                case DialogResult.Cancel:
                    return DialogResult.Cancel;
                case DialogResult.No:
                    return DialogResult.No;
                default:
                case DialogResult.Yes:
                    ApplyChanges();
                    return DialogResult.Yes;
            }
        }


        void ApplyChanges()
        {
            if (filtre.id == default(Guid))
                filtre.id = Guid.NewGuid();

            IsCibleModified = false;

        }

        private void CBEAgeMin_TextChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CBEAgeMax_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CLBCGenre_SelectedValueChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CLBCNivInstruc_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void checkedListBoxControl2_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void checkedListBoxControl3_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void checkedListBoxControl4_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CLBCEquipement_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CLBCNbChambre_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CLBCSalaire_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CLBCVousetes_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CLBCTypeHabita_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void checkedListBoxControl5_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        private void CLBCNbVoiture_SelectedIndexChanged(object sender, EventArgs e)
        {
            IsCibleModified = true;
        }

        

    }
}